package com.ljh.myrpc.protocol;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 消息协议结构
 * @param <T>
 */

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProtocolMessage<T> {
    private Header header;

    private T body;

    @Data
    public static class Header {
        // 魔数，保证安全性
        private byte magic;
        // 版本号
        private byte version;
        // 序列化器
        private byte serializer;
        // 消息类型（请求/响应）
        private byte type;
        // 状态码
        private byte status;
        // 请求id
        private long requestId;
        // 消息体长度
        private int bodyLength;
    }
}
